﻿using System.Data.Entity;
using System.Linq;
using System.Net;
using System.Web.Mvc;
using MSDAL;
using PagedList;

namespace MSWeb.Controllers
{
    public class NauczycielesController : Controller
    {
        private MSEntities _db = new MSEntities();

        // GET: Nauczycieles
        [Authorize]
        public ActionResult Index(int? page)
        {
            int pageSize = 10;
            int pageNumber = (page ?? 1);
            return View(_db.Nauczyciele
                .OrderBy(i => i.IDNauczyciela)
                .ToPagedList(pageNumber, pageSize));
        }

        [Authorize]
        public ActionResult Detale(int? id)
        {
            if (!id.HasValue)
            {
                TempData["Error"] = "Nieodnaleziono podanego rekordu";
                return RedirectToAction("Index");
            }
            else
            {
                if (_db.Nauczyciele.Any(i => i.IDNauczyciela == id))
                {
                    Nauczyciele nauczyciele = _db.Nauczyciele.First(i => i.IDNauczyciela == id);
                    return PartialView("_DetaleNauczyciele", nauczyciele);
                }
                else
                {
                    TempData["Error"] = "Nieodnaleziono podanego rekordu";
                    return RedirectToAction("Index");
                }
            }
        }

        [Authorize]
        public ActionResult Edycja(int? id)
        {
            if (!id.HasValue)
            {
                TempData["Error"] = "Nieodnaleziono podanego rekordu";
                return RedirectToAction("Index");
            }
            else
            {
                if (_db.Nauczyciele.Any(i => i.IDNauczyciela == id))
                {
                    Nauczyciele nauczyciele = _db.Nauczyciele.First(i => i.IDNauczyciela == id);
                    return PartialView("_EdycjaNauczyciele", nauczyciele);
                }
                else
                {
                    TempData["Error"] = "Nieodnaleziono podanego rekordu";
                    return RedirectToAction("Index");
                }
            }
        }

        [Authorize]
        public ActionResult Tworzenie()
        {
            return PartialView("_TworzenieNauczyciele");
        }


        [Authorize]
        public ActionResult Details(int? id)
        {
            if (id == null)
            {
                TempData["Error"] = "Nieodnaleziono podanego rekordu";
                return RedirectToAction("Index");
            }
            Nauczyciele nauczyciele = _db.Nauczyciele.Find(id);
            if (nauczyciele == null)
            {
                return HttpNotFound();
            }
            return View(nauczyciele);
        }


        // GET: Nauczycieles/Create
        [Authorize]
        public ActionResult Create()
        {
            return View();
        }

        // POST: Nauczycieles/Create
        // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
        // more details see http://go.microsoft.com/fwlink/?LinkId=317598.
        [HttpPost]
        [Authorize]
        [ValidateAntiForgeryToken]
        public ActionResult Create(Nauczyciele nauczyciele)
        {
            nauczyciele.CzyUsuniety= false;
            _db.Nauczyciele.Add(nauczyciele);
            _db.SaveChanges();
            return RedirectToAction("Index");
        }

        // GET: Nauczycieles/Edit/5
        [Authorize]
        public ActionResult Edit(int? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            var nauczyciele = _db.Nauczyciele.FirstOrDefault(i=>i.IDNauczyciela == id);
            if (nauczyciele == null)
            {
                return HttpNotFound();
            }
            return View(nauczyciele);
        }

        // POST: Nauczycieles/Edit/5
        // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
        // more details see http://go.microsoft.com/fwlink/?LinkId=317598.
        [HttpPost]
        [Authorize]
        [ValidateAntiForgeryToken]
        public ActionResult Edit(Nauczyciele nauczyciele)
        {
            if (!ModelState.IsValid) return View(nauczyciele);
            _db.Entry(nauczyciele).State = EntityState.Modified;
            _db.SaveChanges();
            return RedirectToAction("Index");
        }

        // GET: Nauczycieles/Delete/5
        [Authorize]
        public ActionResult Delete(int? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            Nauczyciele nauczyciele = _db.Nauczyciele.Find(id);
            if (nauczyciele == null)
            {
                return HttpNotFound();
            }
            return View(nauczyciele);
        }

        // POST: Nauczycieles/Delete/5
        [HttpPost, ActionName("Delete")]
        [Authorize]
        [ValidateAntiForgeryToken]
        public ActionResult DeleteConfirmed(int id)
        {
            Nauczyciele nauczyciele = _db.Nauczyciele.Find(id);
            _db.Nauczyciele.Remove(nauczyciele);
            _db.SaveChanges();
            return RedirectToAction("Index");
        }

        protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                _db.Dispose();
            }
            base.Dispose(disposing);
        }
    }
}
